// 知识点1：容器的改变可能会使迭代器失效，插入和删除各有其相关的规则，P315.

// 知识点2：必须保证每次改变容器的操作之后都正确的重新定位迭代器的操作

// 知识点3：调用erase()之后，其返回的迭代器指向的是序列中的下一个元素，其返回的迭代器可以用来更新

// 知识点4：向容器插入元素后，对于list和forward_list，指向容器的迭代器、指针、引用皆有效

// 对于list

// advance(iter, 2);

// 对于forward_list

//  auto iter = vi.begin(), prev = vi.before_begin();
//     while (iter != vi.end()) {
//         if (*iter % 2) {
//             iter = vi.insert_after(prev, *iter);
//             advance(iter, 2);
//             advance(prev, 2);
//         }
//         else
//             iter = vi.erase_after(prev);
//     }
